using System;
using CSharpPro._0918;
using CSharpPro._0925;
using CSharpPro._1009;
using Demo0925 = CSharpPro._0925.Demo; // 别名区分0925的Demo类
using CSharpPro._1016;
using CSharpPro._1023; // 引入Demo3所在命名空间
using CSharpPro._1030;
// 给两个冲突的User类所在命名空间加别名，彻底解决歧义
using UserSystemNS = CSharpPro._1016; // 对应带MainMenu的用户系统
using UserEntityNS = CSharpPro._1030; // 对应接口测试的用户实体类
using IntegratedTestProgram._1106;

namespace IntegratedTestProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 手机信息模块（0918命名空间）
            Phone phone = new Phone
            {
                Brand = "苹果6SPlus",
                Weight = "192g",
                Camera = 120000000,
                Price = 6288
            };
            phone.PrintInfo();
            Console.WriteLine("======================================");

            // 2. 0925的Demo类测试（年份相关功能）
            Demo0925 yearDemo = new Demo0925();
            yearDemo.TestPrint2(2000, 2100);
            Console.WriteLine("======================================");

            // 3. 旅游价格计算模块
            var calc = new TravelPriceCalc();
            Console.Write("月份：");
            if (int.TryParse(Console.ReadLine(), out int month) && month >= 1 && month <= 12)
            {
                Console.Write("交通（航班/动车/原价）：");
                string trans = Console.ReadLine()?.Trim() ?? "";
                Console.WriteLine($"您选择{month}月{trans}出行，最终旅游价格为：{calc.GetPrice(month, trans):C}");
            }
            else
            {
                Console.WriteLine("输入的月份无效（需输入1-12之间的整数）");
            }
            Console.WriteLine("======================================");

            // 4. 1009的Demo1类（数字处理：水仙花数+100以内质数）
            Demo1 numberDemo1 = new Demo1();
            numberDemo1.PrintNarcissisticNumbers();
            numberDemo1.PrintPrimesUnder100();
            Console.WriteLine("======================================");

            // 5. 1016的Demo2类功能测试（排序、打印等）
            Demo2 demo2 = new Demo2();
            demo2.SortThreeNumbers();
            demo2.PrintNumbersWithoutSeven();
            demo2.PrintMultiplicationTable();
            demo2.FindPerfectNumbers();
            demo2.AnalyzeNumber();
            demo2.PrintDiamond();
            Console.WriteLine("======================================");

            // 6. 用户系统测试（1016命名空间：带MainMenu的User）
            UserSystemNS.User userSystem = new UserSystemNS.User();
            Console.WriteLine("欢迎使用用户系统！");
            userSystem.MainMenu();
            Console.WriteLine("======================================");

            // 7. 数组排序测试（1023命名空间：Demo3冒泡排序）
            int[] numbers1 = { 8, 3, 19, 5, 1, 12 };
            Console.WriteLine("【第一个数组】");
            Console.WriteLine("排序前：");
            Demo3.PrintArray(numbers1);

            Demo3.BubbleSort(numbers1);
            Console.WriteLine("\n排序后：");
            Demo3.PrintArray(numbers1);
            Console.WriteLine();

            int[] numbers2 = { 5, 2, 9, 1, 5, 6 };
            Console.WriteLine("【第二个数组】");
            Console.WriteLine("排序前：");
            Demo3.PrintArray(numbers2);

            Demo3.BubbleSort(numbers2);
            Console.WriteLine("\n排序后：");
            Demo3.PrintArray(numbers2);
            Console.WriteLine("======================================");

            // 8. UserTest抽象类测试（1030命名空间）
            UserTest test = new UserTestImpl();
            test.M1();
            test.M2();
            test.M3();
            Console.WriteLine("======================================");

            // 9. UserService接口测试（1030命名空间：增删改查）
            IUserService userService = new UserServiceImpl();

            // 测试新增（用户实体类：UserEntityNS.User）
            var newUser = new UserEntityNS.User { Id = 1, Name = "李四", Age = 30 };
            bool addSuccess = userService.AddUser(newUser);
            Console.WriteLine(addSuccess ? "新增用户成功" : "新增用户失败");

            // 测试查询
            var queryUser = userService.GetUserById(1);
            if (queryUser != null)
            {
                Console.WriteLine($"查询到用户：ID={queryUser.Id}, 姓名={queryUser.Name}, 年龄={queryUser.Age}");
            }
            else
            {
                Console.WriteLine("查询失败：未找到该用户");
            }

            // 测试修改
            if (queryUser != null)
            {
                queryUser.Age = 31;
                bool updateSuccess = userService.UpdateUser(queryUser);
                Console.WriteLine(updateSuccess ? "修改用户成功" : "修改用户失败");
            }
            else
            {
                Console.WriteLine("修改失败：用户不存在");
            }

            // 测试删除
            bool deleteSuccess = userService.DeleteUser(1);
            Console.WriteLine(deleteSuccess ? "删除用户成功" : "删除用户失败");

            Console.WriteLine("======================================");
            Console.WriteLine("所有模块测试完成，按任意键退出...");
            Console.ReadLine();
            IUserService1 userService1 = new UserServiceImpl1();
            userService1.MainMenu();
        }
    }
}